package cn.demoncat.util.word.poi_tl;

import com.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.template.ElementTemplate;

import java.util.Iterator;

/**
 * 循环列的 TableRenderPolicy
 *
 * 1、列表标签，写在列前 {{列表}}
 * 2、属性标签，写在列中 [属性]
 * 3、列必须指定宽度，将自动等分
 *
 * @author 延晓磊
 * @since 2023年12月27日
 */
public class LoopColumnTableRenderPolicy extends com.deepoove.poi.plugin.table.LoopColumnTableRenderPolicy{


    /**
     * 重写
     *
     * 1、将空列表，设置为null，避免等分列时报错 error / by 0
     *
     * @param eleTemplate
     * @param data
     * @param template
     */
    @Override
    public void render(ElementTemplate eleTemplate, Object data, XWPFTemplate template) {
        // 将空列表，设置为null
        if (data instanceof Iterable) {
            Iterator<?> iterator = ((Iterable<?>) data).iterator();
            if (!iterator.hasNext()) {
                data = null;
            }
        }
        // 渲染
        super.render(eleTemplate, data, template);
    }
}
